iT邦幫忙

2023 iThome 鐵人賽

DAY 12
0

今天來到迴圈的最後了,還不知道for 迴圈、while 迴圈和do-while 迴圈可以前往兩天文章唷!

巢狀迴圈

定義:
迴圈敘述中又有其他迴圈敘述

https://ithelp.ithome.com.tw/upload/images/20230926/20163139xFaj7QZQ4S.png

我們來用巢狀迴圈完成99乘法表吧!

public class NestedLoopDemo {
	public static void main(String[] args) {
		//外迴圈
		for (int i = 1 ; i<=9 ; i++) {
			//內迴圈
			for (int j=1 ; j<=9 ; j++) {
				
				System.out.print(i+"*"+j+"="+(i*j)+"\t");
			}  
			System.out.println(" ");
		}

	}
}
/* 輸出結果
1*1=1	1*2=2	1*3=3	1*4=4	1*5=5	1*6=6	1*7=7	1*8=8	1*9=9	 
2*1=2	2*2=4	2*3=6	2*4=8	2*5=10	2*6=12	2*7=14	2*8=16	2*9=18	 
3*1=3	3*2=6	3*3=9	3*4=12	3*5=15	3*6=18	3*7=21	3*8=24	3*9=27	 
4*1=4	4*2=8	4*3=12	4*4=16	4*5=20	4*6=24	4*7=28	4*8=32	4*9=36	 
5*1=5	5*2=10	5*3=15	5*4=20	5*5=25	5*6=30	5*7=35	5*8=40	5*9=45	 
6*1=6	6*2=12	6*3=18	6*4=24	6*5=30	6*6=36	6*7=42	6*8=48	6*9=54	 
7*1=7	7*2=14	7*3=21	7*4=28	7*5=35	7*6=42	7*7=49	7*8=56	7*9=63	 
8*1=8	8*2=16	8*3=24	8*4=32	8*5=40	8*6=48	8*7=56	8*8=64	8*9=72	 
9*1=9	9*2=18	9*3=27	9*4=36	9*5=45	9*6=54	9*7=63	9*8=72	9*9=81
*/

迴圈的跳離

break

可以強迫跳離迴圈

for(初始化語句; 迴圈條件; 迭代語句)
{
    敘述1;
    敘述2;
     ...
    break; //僅執行到此行
     ...
    敘述3; //此敘述不會被執行
}

範例:


public class BreakDemo {

	public static void main(String[] args) {
		int i;

		for (i = 1; i <= 10; i++){
			if( i % 3 == 0) {
				break;
			}
			System.out.println("i = " + i);  //此行執行結果並無印出
		}
		System.out.println("當迴圈中斷,i="+i);

	}
}

/* 輸出結果
i = 1
i = 2
當迴圈中斷,i=3
*/

break語句不僅可以結束其所在的迴圈,也可以透過標籤結束在該標籤的迴圈

java的標籤只有放在迴圈語句之前才有作用

bpublic class BreakDemo2 {

	public static void main(String[] args) {
		
		outer:
		for (int i = 1 ; i <= 5 ; i++) {
			//內迴圈
			for (int j = 0 ; j <= 3 ; j++) {
				System.out.println("i 的值為:" + i + " j的值為:" + j);
				if(j == 1) {
					
					break;
				}
			}  
		}

	}

}

/* 輸出結果
i 的值為:1 j的值為:0
i 的值為:1 j的值為:1
i 的值為:2 j的值為:0
i 的值為:2 j的值為:1
i 的值為:3 j的值為:0
i 的值為:3 j的值為:1
i 的值為:4 j的值為:0
i 的值為:4 j的值為:1
i 的值為:5 j的值為:0
i 的值為:5 j的值為:1
*/

public class BreakDemo2 {

	public static void main(String[] args) {
		//標籤
		outer:
		for (int i = 1 ; i <= 5 ; i++) {
			//內迴圈
			for (int j = 0 ; j <= 3 ; j++) {
				System.out.println("i 的值為:" + i + " j的值為:" + j);
				if(j == 1) {
				
					break outer;
				}
			}  
		}

	}

}

/* 輸出結果
i 的值為:1 j的值為:0
i 的值為:1 j的值為:1
*/

注意:通常緊跟break 之後的標籤,必須在標籤所在的迴圈之前定義才有意義!

continue

可以強迫跳到迴圈開頭 ,忽略此次迴圈剩下的語句,不會終止迴圈

for(初始化語句; 迴圈條件; 迭代語句)
{
    敘述1;
    敘述2;
     ...
    continue; //僅執行到此行
     ...
    敘述3; //此敘述不會被執行
}

範例:


public class ContinueDemo {

	public static void main(String[] args) {
		
		int i;

		for (i = 1; i <= 10; i++){
			if( i % 3 == 0) {
				continue;
			}
			System.out.println("i = " + i);  //此行執行結果並無印出
		}
		System.out.println("當迴圈中斷,i="+i);

	
	}

}
/* 輸出結果
i = 1
i = 2
i = 4
i = 5
i = 7
i = 8
i = 10
當迴圈中斷,i=11
*/
public class ContinueDemo2 {

	public static void main(String[] args) {

		//標籤
		outer:
		for (int i = 1 ; i <= 5 ; i++) {
			//內迴圈
			for (int j = 0 ; j <= 3 ; j++) {
				System.out.println("i 的值為:" + i + " j的值為:" + j);
				if(j == 1) {
					continue outer;
				}
			}  
		}
	}

}
/* 輸出結果
i 的值為:1 j的值為:0
i 的值為:1 j的值為:1
i 的值為:2 j的值為:0
i 的值為:2 j的值為:1
i 的值為:3 j的值為:0
i 的值為:3 j的值為:1
i 的值為:4 j的值為:0
i 的值為:4 j的值為:1
i 的值為:5 j的值為:0
i 的值為:5 j的值為:1
*/

使用return結束方法

public class ReturnDemo {

	public static void main(String[] args) {
		
		for(int i = 0; i < 3; i++) {
			System.out.println("i 的值為:" + i );
			
			if(i == 1) {
				return;
			}
			System.out.println("return 之後");
		}
	}

}

/* 輸出結果
i 的值為:0
return 之後
i 的值為:1
*/

return 不是專門用於迴圈的關鍵字,一樣可以結束迴圈,但break和continue不同的是,return 直接結束整個方法

今天就結束迴圈囉!明天就會進入到陣列的部分!


上一篇
Day 11 迴圈II
下一篇
Day13 陣列(Array)I
系列文
玩轉Java:從基礎打造你的程式超能力30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言